Computer systems using conventional disks and storage subsystems incur substantial system and storage management expenses because of tight coupling between the computer systems and the storage subsystems. Storage virtualization addresses this problem by decoupling computer system management from storage management. Distributed storage virtualization schemes offer further scaling advantages, including the ability to scale to multiple computer systems, multiple storage systems, and large storage networks with adequate performance.
The distributed virtual storage networks generally employ Small Computer System Interface (SCSI) semantics to direct interactions between components in the networks. Currently, the predominant forms of SCSI are termed SCSI-2 and SCSI-3. Among its features, SCSI-2 permits enhanced SCSI device data transfer methodologies while maintaining the asynchronous transfer of data, instructions, and messages from earlier SCSI implementations. Developers have further updated the SCSI-2 standard to produce the SCSI-3 standard. For example, SCSI-3 command protocols do not have dependencies on a physical interconnection medium, allowing the SCSI-3 command operations and data flows over a serial bus such as a Fibre Channel interconnect medium. The use of the SCSI interface is advantageous because numerous communication channels and components are currently adapted for use on a SCSI type network. Another key advantage of using SCSI is that the operating system driver stacks exist almost universally for SCSI devices.
In the SCSI protocols, transactions between the components use SCSI command set semantics. For example, within the SCSI protocol, a sender (i.e., the component that initiates a transaction) is allowed to perform a fixed number of other transfers before the sender stalls waiting for an acknowledgment of the transaction. The full extent of SCSI semantics, also called state, is beyond the scope of this disclosure, but is described in the relevant ANSI/ISO T10 standards (SCSI-3) and X3T9 standards (SCSI-2). In a network having multiple storage containers, the SCSI device and logical unit number (LUN) semantics identify a particular storage device and particular segments in the device, as needed for virtual storage. Similarly, implementing the distributed virtualization storage networks generally necessitates the further distribution of SCSI semantics for the virtual disk.
To avoid the distribution of SCSI semantics, some of the known virtual storage systems use block device semantics in operating system driver stacks, thereby minimizing the need for SCSI behavior. Other known virtual storage systems avoid distributing SCSI input/output (I/O) semantics altogether through the use of centralized SCSI storage devices, designated by LUNS. Alternatively, designers may develop a distributed virtual storage network that operates without using SCSI device semantics to present virtual disks to hosts. This configuration, however, would require inventing a new, presently unknown interface model and implementing this model throughout all of the elements in each supported host system.
So far as it is known, the notion of distributing SCSI device semantics to accompany the distributed table-driven virtual mapping is not provided for by an established or developing storage network. Accordingly, there exists a current need for a solution to distribute SCSI semantics in a virtual storage network.